export type ValueType = string | number | boolean

export type LabelValueType<A extends string = 'label', B extends string = 'value'> = (A extends never
	? never
	: {
			[P in A]: React.ReactNode
	  }) &
	(B extends never
		? never
		: {
				[P in B]: ValueType
		  })

export type OptionType<LabelField extends string = 'label', ValueField extends string = 'value'> = {
	height?: string | number
	width?: string | number
	className?: string
	disabled?: boolean
	[propName: string]: any
} & LabelValueType<LabelField, ValueField>
